﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ArduinoGenericDistanceSensor.Sensors
{
    /// <summary>
    /// Интерфейс для работы с датчиками расстояния.
    /// </summary>
    public interface ISensorBase
    {
        /// <summary>
        /// Возвращает максимальную дистанцию, на которой датчик способен работать.
        /// </summary>
        /// <returns>Дробное число, обозначающее дистанцию в мм.</returns>
        double GetDistanceMax();

        /// <summary>
        /// Возвращает минимальную дистанцию, на которой датчик способен работать.
        /// </summary>
        /// <returns>Дробное число, обозначающее дистанцию в мм.</returns>
        double GetDistanceMin();

        /// <summary>
        /// Возвращает текущее расстояние до препятствия, определенное датчиком.
        /// </summary>
        /// <returns>Дробное число, обозначающее дистанцию в мм.</returns>
        double GetDistanceCurrent();

        /// <summary>
        /// Возвращает название модели датчика.
        /// </summary>
        /// <returns>Название модели.</returns>
        string GetName();

        /// <summary>
        /// Получает аналоговое значение и обрабатывает его на основе данных спецификации датчика, получая текущее значение расстояния.
        /// </summary>
        /// <param name="value">Аналоговое значение на аналоговом выходе платформы.</param>
        void SetAnalogData(int value);
    }
}
